package com.night.icm.service.base.service;

import com.night.icm.common.utils.PageDataDTO;
import com.night.icm.common.utils.SimpleDataDTO;
import com.night.icm.model.base.TeacherDTO;

import java.util.List;

/**
 * TeacherService
 *
 * @author Liao ZhiYong
 * @date 2020/2/13
 */
public interface TeacherService {

    /**
     * 分页查询教师信息
     *
     * @param page      页号，从0开始
     * @param size      每页记录条数
     * @param sort      排序字段，例如：字段1,asc,字段2,desc
     * @param academyId 所属学院
     * @param code      学生学号
     * @param name      学生姓名
     * @return 教师信息
     */
    PageDataDTO<TeacherDTO> findOnePage(int page, int size, String sort, String academyId, String code, String name);

    /**
     * 添加教师
     *
     * @param teacherDTO 教师信息
     * @return 添加教师
     */
    TeacherDTO create(TeacherDTO teacherDTO);

    /**
     * 删除教师
     *
     * @param id 教师id
     */
    void delete(String id);

    /**
     * 更新教师信息
     *
     * @param id         教师id
     * @param teacherDTO 教师信息
     * @return 教师信息
     */
    TeacherDTO update(String id, TeacherDTO teacherDTO);

    /**
     * 通过id查找教师
     *
     * @param id 教师id
     * @return 教师信息
     */
    TeacherDTO findById(String id);

    /**
     * 查找所有教师，可选择排序
     *
     * @param param   排序参数
     * @param pattern 排序模式: asc/desc
     * @return 教师信息
     */
    List<TeacherDTO> findAll(String param, String pattern);

    /**
     * 检查教师是否已存在
     *
     * @param code 教师code
     * @return 教师信息
     */
    SimpleDataDTO<Boolean> checkCodeExist(String code);

    /**
     * 通过用户id查找教师
     *
     * @param userId 用户id
     * @return 教师
     */
    TeacherDTO findByUserId(String userId);
}
